Visualize Latest Observations from the Ambient Weather Stations

Visualize Latest Observations from the Ambient Weather Stations#

Imports#

import glob
import xarray as xr
from bokeh.models.formatters import DatetimeTickFormatter
import hvplot.xarray
import holoviews as hv
from distributed import Client
import warnings

warnings.filterwarnings("ignore")
hv.extension('bokeh')

Start up a Dask Cluster#

client = Client()
client

Client

Client-9b7fbaaf-1483-11f0-8b1b-000d3a3190f0

Connection method: Cluster object Cluster type: distributed.LocalCluster
Dashboard: http://127.0.0.1:8787/status

Cluster Info

Read the Sorted Data, Using the Last File#

files = sorted(glob.glob('../../data/surface-meteorology/*/*/*/*.nc'))

ds = xr.open_mfdataset(files[-60:])
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
Cell In[3], line 3
      1 files = sorted(glob.glob('../../data/surface-meteorology/*/*/*/*.nc'))
----> 3 ds = xr.open_mfdataset(files[-60:])

File ~/miniconda3/envs/instrument-cookbooks-dev/lib/python3.10/site-packages/xarray/backends/api.py:1597, in open_mfdataset(paths, chunks, concat_dim, compat, preprocess, engine, data_vars, coords, combine, parallel, join, attrs_file, combine_attrs, **kwargs)
   1594 paths = _find_absolute_paths(paths, engine=engine, **kwargs)
   1596 if not paths:
-> 1597     raise OSError("no files to open")
   1599 paths1d: list[str | ReadBuffer]
   1600 if combine == "nested":

OSError: no files to open

Plot the Data#

formatter = DatetimeTickFormatter(hours="%d %b %Y \n %H:%M UTC")

variables = ['outdoor_temperature', 'outdoor_dewpoint', 'hourlyrainin', 'solarradiation']

panels = []
for variable in variables:
    panels.append(ds[variable].hvplot.line(x='time', by='station', xformatter=formatter))
hv.Layout(panels).cols(1)